Na verdade foram declaradas três variáveis: timer, minutes e seconds.

A vírgula está servindo para separar as declarações. E cada declaração pode ou não inicializar a respectiva variável com algum valor. Isso está bem descrito na documentação.

Ou seja, timer, além de ser declarada, também foi inicializada com o valor da variável duration.

Já as outras (minutes e seconds) não foram inicializadas. Mas pode reparar que elas são usadas depois (minutes = parseInt(etc).

entendi, Valeu amigão

Outra coisa que reparei: o código usa `parseInt` para arredondar o resultado da divisão. Apesar de "funcionar", isso nem sempre dá o resultado esperado - [veja aqui](https://pt.stackoverflow.com/q/506307/112052). A meu ver, o mais correto é trocar por `Math.floor`, e somente na divisão. Já o operador `%` retorna o resto da divisão, e se os operandos forem inteiros, o resultado também será. Então o que poderia ser feito é validar se os valores são inteiros, ou arredondar antes dos cálculos, por exemplo. No exemplo abaixo vou omitir esta etapa e assumir que a função sempre recebe inteiros. Outra melhoria é interromper o timer se ele chegar a zero. Não tem porque continuar rodando, já que neste caso o valor não é mais alterado. E se o valor inicial é menor ou igual a zero, nem inicie o timer. Enfim, uma sugestão: ```javascript function displayTime(duration, display) { var minutes = Math.floor(duration / 60).toString().padStart(2, '0'); var seconds = (duration % 60).toString().padStart(2, '0'); display.textContent = minutes + ":" + seconds; } function startTimer(duration, display) { if (duration <= 0) { // se o tempo é menor ou igual a zero, mostra zero nem inicia o timer displayTime(0, display); return; } var intervalId = setInterval(function () { displayTime(duration, display); if (duration > 0) { duration--; } else { // se o tempo zerou, interrompe o timer (não tem porque continuar rodando) clearInterval(intervalId); } }, 1000); } ```