Oi Guilherme boa tarde, respondendo suas dúvidas:
minha duvida é: Se o prompt retorna uma String e não um numero, como ele consegue executar ?
var alturaInformada = prompt ("sua altura é ?");
R: O método prompt exibe uma caixa de diálogo ao usuário o que o usuário digitar nessa caixa é recebido como uma cadeia de caracteres(String) se o que estamos esperando são números precisamos realizar uma conversão quando isso for possível.
Por exemplo se o usuário digitar 1.74 esse "1.74" será uma string não esqueça que string não necessariamente se trata de letras e sim de qualquer valor de texto (letras, números,símbolos).
Como o que queremos é um número para podermos trabalhar com os cálculos do IMC precisamos converter essa entrada do usuário para um Número.
Para solucionar esse problema podemos converter esse número para um inteiro com o parseInt ou podemos converter para um número com casas decimais com o parseFloat ou ainda podemos converter com Number ficando assim:
var alturaInformada= Number(window.prompt("Digite a sua altura", "1.74"));
Perceba que além de converter a cadeia de caracteres para um número eu também indico um valor padrão apra altura para que o usuário reconheça que deve separar os centímetros com . e não com vírgula.
Espero ter ajudado e bons estudos.