# Operations on Scalars, Vectors, and Matrices

Most mathematical functions in the Wolfram Language are set up to apply themselves separately to each element in a list. This is true in particular of all functions that carry the attribute Listable.

A consequence is that most mathematical functions are applied element by element to matrices and vectors.

The Log applies itself separately to each element in the vector:
 In:= Out= The same is true for a matrix, or, for that matter, for any nested list:
 In:= Out= The differentiation function D also applies separately to each element in a list:
 In:= Out= The sum of two vectors is carried out element by element:
 In:= Out= If you try to add two vectors with different lengths, you get an error:
 In:=  Out= This adds the scalar 1 to each element of the vector:
 In:= Out= Any object that is not manifestly a list is treated as a scalar. Here c is treated as a scalar, and added separately to each element in the vector:
 In:= Out= This multiplies each element in the vector by the scalar k:
 In:= Out= It is important to realize that the Wolfram Language treats an object as a vector in a particular operation only if the object is explicitly a list at the time when the operation is done. If the object is not explicitly a list, the Wolfram Language always treats it as a scalar. This means that you can get different results, depending on whether you assign a particular object to be a list before or after you do a particular operation.

The object p is treated as a scalar, and added separately to each element in the vector:
 In:= Out= This is what happens if you now replace p by the list {c,d}:
 In:= Out= You would have gotten a different result if you had replaced p by {c,d} before you did the first operation:
 In:= Out= 