Funcion de peleadores en javascript con do while

Estoy haciendo la funcion de 2 peleadores que se enfrentan y en base a su ataque y vida para declarar un ganador… lo que sucede es que si la vida de ambos es negativa declaro el ganador a partir del que tiene menor vida, no por el primero en quedar con su vida negativa o igual 0(sucede en este ejemplo que pongo con mi funcion).. necesitaria poner condiciones dentro del do while o algo asi… Alguna recomendacion para mejorar el codigo tambien me ayudaria..Gracias

function Fighter(name, health, damagePerAttack) {     this.name = name;     this.health = health;     this.damagePerAttack = damagePerAttack;     this.toString = function() { return this.name; } }  function declareWinner(fighter1, fighter2, firstAttacker) { let ganador ="El ganador es... "; let intercambio = fighter1;  console.log('Inicia la batalla... \n'); (firstAttacker != fighter1.name)  ?  (fighter1= fighter2, fighter2 = intercambio, console.log(`El primer ataque es para... `+ fighter1.name)) : console.log(`La primer ataque es para... `+fighter1.name);  do{     fighter2.health -= fighter1.damagePerAttack     console.log(`$  {fighter1.name} lanza un ataque de $  {fighter1.damagePerAttack}... La salud de $  {fighter2.name} es: $  {fighter2.health}`);      fighter1.health -= fighter2.damagePerAttack     console.log(`$  {fighter2.name} lanza un ataque de $  {fighter2.damagePerAttack}... La salud de $  {fighter1.name} es: $  {fighter1.health}`);     }while(fighter2.health >= 0 && fighter1.health >= 0)  (fighter1.health >0 & fighter1.health>fighter2.health) ? ganador+=fighter1.name : ganador+=fighter2.name  return ganador }  console.log(declareWinner(new Fighter("Pikashu", 10, 2), new Fighter("Meow", 5, 4), 'Pikashu'));