Как работает array.sort()?
Функция, которую передают в метод sort() — это только весы с двумя чашами:


В них каждый раз передают какие-то 2 элемента массива, и весы должны вынести свой вердикт: кто из двух тяжелее. Таких взвешиваний при одной сортировке массива происходит не одно, а множество.

Сортируют не только массивы чисел, где всё просто и достаточно a - b. Например, массив объектов типа [
  {name: "Вольдемар", iq: 165},
  {name: "Сигизмунд", iq: 178},
  {name: "Жоржик", iq: 85},
] захочется отсортировать по свойству iq. Тогда функция должна будет возвращать a.iq - b.iq
Вернет и не меньший элемент, и не 17. Вернет отрицательное или положительное число. Это по сути сравнение - если функция вернула отрицательное - то значит a < b и надо a переместить в массиве ниже (на пузырьке проще объяснять).
С таким же успехом вы можете написать что то вроде:
return a>b?1:(a