How to | Create Definitions for Variables and Functions
Mathematica has a very general notion of functions, as rules for arbitrary transformations. Values for variables are also assigned in this manner. When you set a value for a variable, the variable becomes a symbol for that value.
Here is a simple transformation rule. It says: whenever you see

, replace it by 3:
| Out[31]= |  |
The variable

has a value of 3.
Whenever you evaluate an expression, 3 is substituted for

:
| Out[32]= |  |
You can remove the rule by defining a new one:
| Out[33]= |  |
The new rule says: whenever you see

, replace it by

. So far there are no rules associated with

, so its value is itself.
Assign a value to

:
| Out[34]= |  |
Now if you evaluate

, the rule for

says to replace

by

, and the rule for

says to replace

by 4, so the result is

, or 16:
| Out[35]= |  |
If you change the value of

, then the value of

changes:
| Out[36]= |  |
| Out[37]= |  |
Now assign a value to

, like this:
| Out[38]= |  |
Since

has already been assigned the value 3, the rule you have defined is "replace

by 9", not "replace

by

". So

does not depend on

:
| Out[39]= |  |
| Out[40]= |  |
This happened because when a rule is defined using

(
Set), the right-hand side is evaluated before the rule is defined.
You can also define rules using

(
SetDelayed), like this:
When a rule is defined with

the right-hand side is not evaluated before the rule is defined. So even if

already has a value, this new rule says: whenever you see

, replace it with

. So in this case,

depends on

:
| Out[42]= |  |
| Out[43]= |  |
| Out[44]= |  |
Functions in
Mathematica are defined by rules that act on patterns. Here is a simple one:

is a pattern in which

stands for any expression (which is represented on the right-hand side by the name

). The rule says: if you have

of any expression, replace it by that expression squared:
| Out[46]= |  |
| Out[58]= |  |
Here is a function with two arguments:
| Out[49]= |  |
Always use

to define functions, otherwise the variables on the right-hand side may not represent the associated expressions on the left-hand side, since they will be evaluated before the rule is defined:
| Out[50]= |  |
That happened because

is 9 and

is 3. This rule says that anything matching the pattern

is replaced by 90:
| Out[59]= |  |