you need to focus on testing what each object does for yourself, its not that difficult. look at the actions conditions parameters etc of each one, and try to do little tests based on little hypothesis you have as to what each might do.
As for expressions, theres not all that much too them besides math and a very basic syntax.
whenever you see an object name followed by a dot, it means its returning whatever parameter after the dot as a number, or *rarely* a string for that specific object.
so sprite.x, is returning the x position as a number for the object "sprite", so if the object is at x=24, sprite.x=24. etc, this goes for all "after dot" parameters, like .angle, .y, .width, etc. theres too many to list. if the condition that expression is running for picks an instance of sprite with its logic, then sprite.x will refer to the sprites which have been picked.
if you see ONLY a .x .y .angle etc. that means that it is choosing the object type specified in that specific action.
so lets say we have the action... set sprite's x position to: sprite.x+other.y+5
you could :
also write it as the action......... set sprite's x position to: .x+other.y+5
you don't need to write "sprite".x, because sprite is already the object being referred to in the action.
both do the exact same thing, except one is cleaner and quicker to write.
brackets, multiplication, division, etc. all follow the basic BEDMAS you'd expect to use in any math. think of expressions as any other mathematical equation, where the result of the expression is your answer.
http://sourceforge.net/apps/mediawiki/c ... xpressions
basic expression stuff and what each is...
private variable are the next BIG thing you need to know, basically, anything encompassed in single quotes like 'your variable' is a private variable of an object.
now remember how you can have sprite.x and .x mean the same thing based on what the action is blablabla.
the same goes for PV's, except its a tad different. you can have...
Sprite.Value('Variable name'): which nobody really uses, since its long compared to:
Sprite('Variable name') : this does the same thing in EVERY situation at the above.
'Variable name' : without brackets or sprite, works the same as the ".x, .y, .angle"
these are the MAIN and i'm pretty sure ONLY things you really need to know, because i get along fine with just this knowledge, and I write some of the most complicated expressions around.
of course theres also the oh so important
http://sourceforge.net/apps/mediawiki/c ... xpressions
system expressions work as described in this well written wiki page. look over it, because it gives you those "simpler" ways of doing things.
of course just knowing HOW expressions look and work doesn't mean you can write them, but at least now you can apply your mathematical knowledge to expressions.
math is the only way. i can't make that any less true, and i wont explain math either, theres enough of that EVERYWHERE to help you. Google is your friend.