Порядок выполнения действий в выражении --i + i++?
--i + i++ - это не атомарное выражение. Это (--i) + (i++) - как раз потому что приоритеты  инкремента выше приоритетов сложения.  Javascript не вычисляет ничего разом, он вычисляет всё пошагово слева направо. Приоритетность разбивается на токены не снизу вверх, а сверху-вниз. Если два подвыражения с более высоким приоритетом оказались после разбивки слева и справа, то левый выполняется первым, правый вторым, т.к. для выражения с низким приоритетом не важно насколько приоритет подвыражений выше - для него они равноправны. 
Никакого UB в отличие от С тут быть не может.
В случае с C++ мы имеем дело с неопределенным поведением. Здесь одна и та же переменная в пределах точки следования меняет свое значение дважды.

Так на C++ писать просто нельзя.