Лучше изначально сразу попробовать обозвать все правильно, что у нас слева и справа от знака =.
Левосторонне выражение = правостороннее выражение.
LValue = RValue
Понятие RValue ссылка изначально появилось как присваиваемое значение (объект), который находится справа от знака присваивания (=).
Соответственно, то что слева это левостороння ссылка LValue. Вроде все понятно, если бы не нюансы, возникшие в стандарте С11 (2011г.) RValue понятие начало активно развиваться. Не было печали...
Теперь надо учитывать, что значение справа не всегда будет RValue ссылкой, а может быть и LValue ссылкой.
И теперь RValue - это будет считаться, то что нельзя расположить слева от знака присваивания (=).
int a=15; a=a; // a (слева) это LValue ссылка,
a (справа) это тоже LValue ссылка
a=123; // 123 это RValue что надо понимать int a = 33; int b = a; // конструктор копирования вызывается
Левостороннее выражение может быть не только переменной, но функцией. Правостороннее выражение тоже может быть переменной, функцией, литералом (5, true, nullptr, кроме строкового).

Стандарт C 17 определяет категории значений выражений следующим образом:
- Glvalue — это выражение, вычисление которого определяет удостоверение объекта, битового поля или функции.
- Prvalue — это выражение, вычисление которого инициализирует объект или битовое поле, или вычисляет значение операнда оператора, как указано в контексте, в котором он отображается.
- Xvalue — это значение glvalue, обозначающее объект или битовое поле, ресурсы которого можно использовать повторно (обычно потому, что он находится в конце его существования). Пример. Некоторые виды выражений, в которых содержатся ссылки rvalue (8.3.2), возвращают значения xvalue, например вызов функции, возвращаемой типом которого является ссылка rvalue или приведение к ссылочным типам rvalue.
- Lvalue — это значение glvalue, которое не является xvalue.
- Rvalue — это prvalue или xvalue.