Introduction to Mathematica

Punctuation

There are four types of bracketing:  (parenthesis),  function[arg],  {lists,...},  list[[index]]

,  ;  ( ) [ ] [[ ]] { } <* *>  (* *)  %  “”  \[char]

Tokens

Raw input is parsed into the following tokens.  Builtin names are capitalized.  Operators are used to glue symbols and constants into a nested expression.  Special symbols can be entered as “ESC code ESC” or \[code].

symbols   "string"   1.23`17*^45   operators   (*comment*)

Expressions

Everything is expressions: trees built up of Head[arg,arg,...]forms with have several meaings:
function[variables],  commands[parameters],  operators[operands],  Head[elements],  Type[contents]
Expressions are often not evaluated, but act as structures for symbolically manipulatation.

Operators

Operators are convenient shorthand for their FullForm expressions:  a+b expands to Plus[a,b].
They are classified as prefix, infix, postfix, depending on where their arguments go.
There is a huge precidence table, but it is pretty natural so that common combinations do not need parenthesis.
Note that the operators [ , ] are primative in the sense that they are used in  FullForm.  
Some examples:

[] @ ~ //             function calls
/@  @@ @@@            mapping and applying
= ==  * / + -          definition, relational, arithmetic
f[x_,y_]:=x+y         patterns defining functions
x->y x:>y /. //. /;     rules (->), delayed(:>), replacement 
(#+1)&                anonymous functions
<>  ~~  ``  <* *>                       string joining, substitution

Programming

Mathematica follows many different programming paradigms, but is naturally a functional language.

fn[x_,y_]:=x+y                  functions: delayed definitions with pattern substitution
Table[value,{index,lo,hi,step}] for loops  used to create lists; note the iterator
If[condition,then,else]                      depending on 1st arg, returns the 2nd or 3rd arg 
Module[{a=1},...] Block[]      lexical, dynamic scoping

Builtin Functions

Once you know the structure of the language, it’s just a matter of figuring out the name of the function that does what you want, and looking up the help.  See the examples and tutorials to see various possibilities.