Почему возвращается true а не 5?
Потому что || - это ленивая операция и приоритет у неё ниже, чем у &&.
=> Сначала будет вычислено выражение 5 === 5 && 3 > 1, которое имеет значение true
А раз оно true, то и правую часть 5 вычислять не нужно.
Потому что результат вызова консоль лога это не его аргумент(ы)