Olá Leandro, tudo bem?
Caso queira colocar tag script no início do HTML, dentro do script, deve haver alguma condição que faça com que só rode o script depois do arquivo HTML ser carregado por completo.
As tags scripts são recomendado colocar no final do html justamente por isso, os scripts serão carregados depois que todo html já estiver carregado e seus elementos (body, header, div, button, etc.) prontos para serem utilizados pelo código js.
Por exemplo, é possível fazer isso com jQuery:
//espera carregar o arquivo html
$(document).ready(function(){
//código que será executado
});
A função $(document) seleciona o arquivo html, função ready diz que será executado os códigos dentro dele apenas depois de o arquivo html for carregado.
Aguardo pelo feedback :D
Abraço!