objeto de promessa de javascript de entendimento

Eu estou tentando envolver minha cabeça em torno do objeto de promessa em javascript. Então, aqui eu tenho esse pequeno pedaço de código. Eu tenho um objeto de promessa e dois console.log () em ambos os lados do objeto de promessa.

Oi

zami

mas imprimiu

HI

zami

there

Eu não entendo como a promessa funciona, mas eu entendo como o retorno de chamada assíncrono funciona em javascript. Alguém pode lançar alguma luz sobre esse tópico?

console.log('hi');
var myPromise = new Promise(function (resolve, reject) {
    if (true) {
        resolve('There!');
    } else {
        reject('Aww, didn\'t work.');
    }
});

myPromise.then(function (result) {
    // Resolve callback.
    console.log(result); 
}, function (result) {
    // Reject callback.
    console.error(result);
});
console.log('zami');

questionAnswers(3)

yourAnswerToTheQuestion