Why is console.log(6) executed before console.log(4) [duplicate]

I was searching on a website and came across this question:
Control unit.

console.log(1);

setTimeout(() => console.log(2));

Promise.resolve().then(() => console.log(3));

Promise.resolve().then(() => setTimeout(() => console.log(4)));

Promise.resolve().then(() => console.log(5));

setTimeout(() => console.log(6));

console.log(7);

The console output is: 1 7 3 5 2 6 4
Why is 6 executed before 4?
I want to know why, advise me, what do I lack in order not to know something like that, what else should I learn?

I expected the console output to be: 1 7 3 5 2 4 6