(if exp1 then exp2 else exp3) div (if exp4 then exp5 else exp6)
Is valid and for at least some problems, is entirely reasonable.
I think the key to SML, at least so far… *everything* is an expression. Any complete statement returns a value, and anything that returns a value counts as an expression. Ok, small exceptions here and there like, well, exceptions, but approaching it with “everything is an expression” has really helped my understanding.