Very common confusion that doesn't seem made clear enough from the documentation.
MatrixForm makes things look pretty but you then can't do any calculations with the result.
You can use () to let you do the assignments first and then you can pretty print the result.
And . does matrix or vector multiply while * does element by element multiply
(a = {{2, 3}, {3, 4}, {1, 1}}) // MatrixForm
(b = {2, 7}) // MatrixForm
(a.b) // MatrixForm
It is actually a little more complicated than this, but by the time you understand and need that you shouldn't need this.