предположим у тебя есть функция isEven(5), первые 3 условия она пропустит, на четвертом запустит isEven(isEven(3)), аналогично, запустит isEven(isEven(1)), который вернет false, (false == 0) теперь выражение isEven(isEven(1)) аналогично isEven(false) и оно вернет true, поднимаемся еще на уровень выше к выражению isEven(isEven(3)), которое аналогично isEven(true) и вернет false, поднимаемся к изначальному выражению isEven(isEven(5)), которое аналогично isEven(false) и возвращает true