AFAIK infix operators should be left-associative unless they end with a colon. Apparently I have found a case where this is not true. First, consider the following example showing the expected behavior:
$ scala
Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 9).
Type in expressions for evaluation. Or try :help.
scala> implicit class WithString(s: String) { def ~<(t: String) = s + t; def >~(t: String) = t + s }
defined class WithString
scala> "a" ~< "b" >~ "c"
res8: String = cab
scala> ("a" ~< "b") >~ "c"
res9: String = cab
scala> "a" ~< ("b" >~ "c")
res10: String = acb
Next, consider the following example showing the broken behavior:
scala> implicit class WithString(s: String) { def <~(t: String) = s + t; def ~>(t: String) = t + s }
defined class WithString
scala> "a" <~ "b" ~> "c"
res11: String = acb
scala> ("a" <~ "b") ~> "c"
res12: String = cab
scala> "a" <~ ("b" ~> "c")
res13: String = acb
Mind the slightly different infix operator names.
BTW: I get the thame behavior with Scala 2.11.11 on the latest Oracle JDK 8.