Javascript is a single threaded language. This means it has one call stack and one memory
heap. As expected, it executes code in order and must finish executing a piece code before
moving onto the next. It's synchronous, but at times that can be harmful. For example, if a
function takes awhile to execute or has to wait on something, it freezes everything up in the
meanwhile.