I find that the problem with the ternary operator isn't the operator itself per se, but the concrete syntax. If you could write it
result = if boolean_flag
then do_this()
else do_that();
then I'm sure no one would find it as bad as they do now. The way you formatted the ternary with line-breaks helps a lot, too, I think!