Question: I was watching this [video](https://www.youtube.com/watch?v=AWF7ZzPyagE), and found some elements of it going over my head. 

He says that scripts are 'serialized' and also block subsequent files from being loaded. If this is the case then `Script 1` would finish loading and then `Script 2` would begin loading and then the CSS files would load. 

I do not see how loading the CSS files before would inhibit this behaviour. Since the script files should have a set waiting time even if they are loaded one after the other, swapping around the order should not change this behaviour?

Thanks in advance.

Answer: 
Browsers are now better about allowing things to "load" in parallel, but scripts will be executed in the order they appear on the page. The video's advice applies best to older browsers. The best thing you can do is move script tags to just before the closing of the body tag so that the page will be rendered before needing to execute all of your javascript. Here is the Google Best Practices recommendation about this: <https://developers.google.com/apps-script/guides/html/best-practices#load_javascript_last>

Also note that it is potentially a great performance benefit if you load scripts from a CDN. For example, if you include your own copy of jQuery, every person that visits your site the first time must download it. If you link to jQuery from its CDN, your users have likely already downloaded that same file while visiting another site, and that same file will be used when they visit your site, thus no reason to download it again from you. Also, if you're loading a lot of scripts at once from your server, the download of some of them could be delayed, so loading from other sources opens that up as well.

**Regarding the video (outdated):**

He's saying that the css files will begin downloading if they come before the script tags. If your script tags are already loading, the css files won't begin loading until the scripts are done.

To exaggerate the issue, imagine that if one `script` begins to load, we won't allow anything else to start loading at all. On the other hand, if a `css file` starts to load, the next `script` can begin to load immediately after the `css file` starts to load. This way, they are both loading at the same time. However, if a `script` begins to load, the `css file` CANNOT begin to load until the script is fully loaded.
Its generally good practice to load your JS files at the bottom of your page as you then give HTTP request priority to other elements on the page such as styles (CSS), images and text etc. These will be shown visually to the user first instead of waiting for scripts to load in the background.