Помогите понять как работает код итеративного процесса (разбор кода пошагово)

Всем доброго дня. У меня вопрос к сообществу. Имеется код в ответе, который дал @Vladimir, вот ссылка на страницу с ответом. Так вот в ответе имеется строчка:

if (num % divider) {

насколько я понимаю, это условие, в условии должна быть вторая половина, что то типа if (num % divider **!==0) { и тогда мне это условие становится понятно. Но здесь его нет, но код все равно работает. Огромная просьба - поясните пожалуйста, как и почему это получается?

И еще по ходу выполнения прошу помочь с прояснением. Верно ли мое понимание происходящего:

const node = (num) => { 
  const iter = (divider = 2) => {
    if (divider * divider > num) {
      return num; // Проверяем есть ли делитель кроме самого числа
    }
    if (num % divider) { 
      return iter(divider + 1); // Проверяем получается ли при делении числа из функции на divider целое число. Если нет, то divider +1
    }
    return divider; // Эта часть перезапускает данный if и плюсует к divider единицу до того момента, пока условие не будет выполнено
  }
  return iter(); //когда предыдущий if закончил цикл (число, делящее без остатка найдено), возвращаемся к функции iter 
}
console.log(node(15));

при обращении к node() запускаем весь процесс и выводим ответ на экран.


Ответы (2 шт):

Автор решения: Igor

var b = new Boolean(0);
console.log(typeof b.valueOf(), b.valueOf());
var b1 = new Boolean(3);
console.log(typeof b1.valueOf(), b1.valueOf());

→ Ссылка
Автор решения: Harry

По просьбе прокомментировать понимание...

const node = (num) => { 
  const iter = (divider = 2) => {
    if (divider * divider > num) {
      return num; // Если добрались до значения, большего квадратного корня из num
                  // и ничего не нашли - значит, число простое, возвращаем его 
    }
    if (num % divider) { 
      return iter(divider + 1); // Если число НЕ делится на divider - значит, это
                                // не делитель, и надо рекурсивно проверять
                                // делитель, на 1 больший
    }
    return divider;  // Сюда мы попадаем, если num % divider в предыдущем if равен 0,
                     // т.е. если num  делится на divider - в этом случае возвращаем
                     // найденный делитель divider
  }
  return iter();   // Не настолько знаю javascript, чтобы прокомментировать этот вызов
}
console.log(node(15));

Но сам алгоритм неэффективный и слишком расточительный в смысле стека... Такая глубокая рекурсия может плохо кончиться.

→ Ссылка