Javascript is different from traditional programming languages mainly because of its callbacks & asynchronous nature. Even though Javascript is single-threaded and can run one application at a time, then how come it can process asynchronous requests ?
Have you ever thought that why setTimeout doesn't execute exactly at the given time ? What will setTimeout with a delay of 0ms do ?
"Javascript is a single-threaded non-blocking asynchronous concurrent language" — do you know what this means ?
All such questions are answered in this video which mainly explains the Javascript event loop. This event loop is the key to understanding asynchronous concepts in Javascript.