Vamos lá,
No seu código está pedindo a entrada de uma nota dentro e fora do while, não é necessário, apenas uma vez dentro do While já deve resolver.
O seu while também só está verificando se a nota é maior que 10, então se eu adicionar um número menor que 0 ele deve aceitar também, sem contar que dentro do while só tem o alert, não tem a verificação, então vai ficar em um loop eterno se colocar um valor inválido.
O que eu faria:
var nota = -1; //Apenas para inicializar
while (nota < 0 || nota > 10) { //Aqui eu verifico se a nota é menor que 0 ou maior que 10, para evitar números negativos
nota = parseInt(prompt("Diga uma nota de 0 a 10" )) //Aqui será feita a entrada da nota pelo usuário
if (nota >= 0 && nota <= 10) { //Aqui eu verifico também se a nota é válida para poder quebrar o fluxo do while e não aparecer o erro
break;
}
alert("Esse valor não é válido. Tente novamente.") //Se não foi validado no if anterior ele vai aparecer o erro
}
</script>