Oi, Angelo.
É muito interessante ver como você expandiu o desafio original. Adicionar uma validação para garantir que o valor esteja entre 0 e 100 demonstra uma preocupação real com a consistência dos dados, algo que diferencia um código funcional de um código preparado para o mundo real.
Sua lógica de aninhar as condições dentro de um if principal resolve o problema de valores impossíveis (como números negativos ou acima de 100) que poderiam surgir em um sistema real.
Uma alternativa híbrida
Se você quiser unir a sua validação de segurança com a brevidade do operador ternário, poderia escrever o código desta forma:
const bateria = 70;
const status = (bateria < 0 || bateria > 100)
? "Valor inválido!"
: (bateria < 20)
? "Situação Crítica!"
: (bateria <= 80)
? "Moderada!"
: "Cheia!";
console.log(status);
Nesse formato, a primeira verificação já descarta o erro, e as demais seguem o fluxo lógico. Note que a sua escolha de usar bateria <= 80 na segunda condição é bem precisa, pois cobre exatamente o intervalo que falta após a primeira checagem.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!