Comprender el objeto de promesa de JavaScript

Estoy tratando de entender el objeto de promesa en javascript. Así que aquí tengo este pequeño código. Tengo un objeto de promesa y dos console.log () a cada lado del objeto de promesa. Pensé que se imprimiría

Hola

Ahí

zami

pero se imprimió

HI

zami

there

por qué es así. No entiendo cómo funciona la promesa, pero entiendo cómo funciona la devolución de llamada asincrónica en javascript. ¿Alguien puede arrojar algo de luz sobre este tema?

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');

Respuestas a la pregunta(3)

Su respuesta a la pregunta