print()だけで考えてるから分からなくなる。
isString () とかの函数考えてみりゃわかる。

このときこうなる。
isString (x) ? "true" : "false" ;
関数の()のあとに?があって、これはもちろんisString()の判定結果を使うことを示している。

するとprint はただの命令のprint じゃなくて、括弧つきの関数のprintf()みたいな構文として解釈したほうが良い場合もある。
そうすればprint () と isString () の整合性を付けることができるし、
printに括弧をつけて?:を使った時の挙動の覚え方にも一貫性ができる。