Указать порядок вывода консоль логов и вслух рассуждать почему так выводится.

setTimeout(()=>{
    console.log("timeOut");
}, 0)

console.log(1);

new Promise(resolve => {
    console.log("Promise");
    setTimeout(()=>{
        console.log("777");
        resolve()
    },0)
}).then(() => {
    console.log("then1");
}).then(() => {
    console.log("then2");
})

console.log(4);

setTimeout(()=>{
    console.log("timeOut2");
},0)