An lvalue is a value that is valid on the left-hand side of an assignment statement. The name 'lvalue' means just that: left-value. I'll give a quick-and-dirty C example:

let's say you have

int x;
then you can (assuming correct scope), assign
x = 3;
because x is a regular variable that you can assign a value to. It's perfectly okay to have x on the left side of that equal sign. The compiler would fart at you if you tried something like
3 = x;
Because 3 is a numeric constant, not an lvalue. It's pretty obvious, I think. There are more subtle examples as well; as mentioned in a == writeup a pointer dereference results in an lvalue, so something like
int *x;
*x = 3;

Is valid for the compiler (but at run-time only if x has been properly initialized, otherwise you get a segmentation fault at best, erratic behavior at worst.)