Ответ
Скрипты выполняются в порядке их появления в HTML. Браузер парсит документ последовательно и выполняет скрипты по мере их обнаружения.
Если скрипт содержит async, он загружается асинхронно и выполняется сразу после загрузки, не блокируя парсинг HTML. Порядок выполнения таких скриптов не гарантирован.
Скрипты с defer загружаются асинхронно, но выполняются строго после полной загрузки DOM, в порядке их объявления.
Пример:
<script src="1.js"></script> <!-- Выполнится первым -->
<script src="2.js" async></script> <!-- Может выполниться раньше 3.js -->
<script src="3.js" defer></script> <!-- Выполнится после DOMContentLoaded -->
<script src="4.js" defer></script> <!-- Выполнится после 3.js -->