試しにChromeのDeveloper Toolsを開いて実行して見ると、確かに「BaNaNa」と表示されました。
"B" + ["a", "a"].join("aaa" - 1)
"BaNaNa"
不思議に思ったので少しずつ変えながら何パターンか試してみます。
"B" + ["a", "a"].join("aaa") → "Baaaaa"
"B" + ["a", "a"].join() → "Ba,a"
"B" + ["a", "a"].join("") → "Baa"
"B" + ["a", "a"].join("" - 1) → "Ba-1a"
"B" + ["a", "a"].join(1) → "Ba1a"
"B" + ["a", "a"].join("x" - 1) → "BaNaNa"
"aaa" - 1 の部分が「NaN」として出力されて、それがArray.join()の引数になるので
B + a + NaN + aで 「BaNaNa」というわけですね。
なるほど!