Комментирует редакция «Кода»:
У нас выражение на JavaScript. Начало переводится так: «Возьми букву b, соедини с буквой a, дальше…»
А дальше интересно. Смотрите на два плюсика в середине. Первый плюсик означает «сложи» или «соедини» — то же самое, что самый первый плюс в этом выражении.
А второй плюс — это унарный оператор, он преобразовывает следующую за ним строку в число. Следующая за ним строка — буква «a», это не число. Унарный оператор возвращает значение NaN — Not a Number, то есть «ожидал, что будет число, а это не число».
Получается baNaN.
Потом к этому добавляется ещё одна «a» по тому же принципу, что в начале. Получается baNaNa.
Дальше эту строку преобразовывают в нижний регистр с помощью .toLowerCase() и получается banana.
Подвох был в унарном операторе. То, что это именно он, со стороны не очевидно, потому что для нас это просто плюс. Но JavaScript смотрит на место этого плюса и понимает, что имелось в виду преобразование в число.