How to read mathematical formulas? I'm coming from a programmers background, trying to learn more about physics. Immediately, I was encountered by math, but unfortunately unable to read it. 
Is there a good guide available for reading mathematical notation? I know symbols like exponents, square roots, factorials, but I'm easily confused by things like sub-notation. For example, I have no idea what this is:

fn

I can easily express values using programmatic notation, ie pseudocode:
milesPerHour = 60
distanceInFeet = 100
feetPerMillisecond = ((milesPerHour * 5280) / (1e3 * 60 * 60))
durationInMilliseconds = 100 / feetPerMillisecond

However, I have no clue even where to begin when trying to express the same logic in mathematical notation.
How can I improve my ability to read and interpret mathematical formulas in notation? 
 A: I agree with Gustavo.  There is no magical insight I can give you. By being exposed to the math and understanding the concepts, you understand the symbology. symbolism? whatever. Learn math, thats all I can say to you. Its just like any language. We read math by allowing the symbols to conjure up concepts. Each symbol represents a concept. And through conceptual understanding does the vocabulary make sense, just like any word in English. Like a lot of language students, math students make a similar fallacy... the belief that you need to "translate" into English. A lot is lost when you do that.  Its better to think in terms of the language and not translate into the language you are more familiar with.
Programmers are particularly bad at math. Programmers think to linearly. Its a process for them. Whereas a mathematical expression is an entire concept on whole and cannot necessarily be written in a line of code. Coders also rely heavily on numeric values and get rounded and result in compounded errors; instead of the mathematician that manipulates abstract symbols for exact results.
A: The problem is that you cannot learn mathematical notation as though it were a programming language with a single, well-defined, fixed syntax where particular grammatical constructs always have the same meaning. It's much more like a natural language: a collection of rules and conventions, some inviolate, others less so, with lots of idioms some of which are mutually incompatible, and lots of variation between "dialects" (by which I mean, conventions within various fields). That's why you get the advice in the other answers: There is no reference manual and no formal specification. Just keep reading and writing the language and allow yourself to absorb it through practice. Here, let me give some examples to convince you.
You ask what $f_n$ means devoid of context. Well, sometimes it is the $n$th function in a sequence of functions $f_1,f_2,\ldots$. Sometimes it is the $n$th entry of an $m$-dimensional vector $\mathbf f=(f_1,f_2,\ldots,f_m)$. Sometimes it's the normal component of a force, as opposed to the tangential component which might be called $f_t$.
You might think that at least $f^n$ will always be $f$ to the $n$th power, but that's not always true either. Sometimes we put an index at the top because we're already using indices at the bottom to mean something else — so $f_i^n$ might be the value at the $i$th grid cell at time $n$. Usually $\sin^nx$ means $(\sin x)^n$ but usually $\log^n x$ means $\underbrace{\log\log\cdots\log}_{\text{$n$ times}}\, x$.
Why this apparently miserable state of affairs? Because mathematical notation is actually an extremely efficient method for communicating ideas between people, and people are, with a little bit of practice, quite adept at determining with high accuracy the intended meaning of informal, ad-hoc, underspecified, potentially ambiguous signals. When doing mathematics, we don't worry about shaping our thoughts to fit the rigid syntax of our language, like we do when programming. Instead, we freely shape the syntax to fit our thoughts. If that means it is impossible to read mathematics without knowing what it means, so be it; it only needs to be easy to parse by the intended reader, who is usually a mathematically literate human being. And said reader surely knows that the context in which $f_n$ appears is about, say, sequences of functions, in which case $f_n$ almost certainly means the $n$th function in the sequence.
See also the fourth section ("Mathematical syntax") of Jeremy Kun's essay "Why there is no Hitchhiker’s Guide to Mathematics for Programmers".
(Re. CBenni's comment: Suppose someone asks "What is the meaning of f[n] in programming?" If you're programming in the C family, it means the nth element of the array f. If you're programming in Haskell or ML, it means the function f applied to the list [n], whose only element is n. If you're programming in Mathematica, it means the function f applied to n. The meaning of $f_n$ in mathematics is similar.)
A: I guess the most natural anwer to "How can I improve my ability to read and interpret mathematical formulas in notation?" is: through practice. If you're trying to read physics, you're probably familiar with Calculus. I would advise then that you do a Real Analysis course, only to get used to these notations, to mathematical logic and for the fun of it :)
A: Coming from a programming background, mathematical notation can be troublesome - especially when dealing with indexing and sets in general.
Consider the group $G$ generated by two elements $x$ and $y$ where $x^2=y^2=1$.
This is an infinite group, but you may not have picked up on that just by looking at it. In other words, you can use generators to describe groups simply, but you cannot rely on a finite set of generators to make a finite group.
Number theory is rife with examples of deceptively indexed sums and products; consider convolutions, which require summing over all divisors of $n$. Now, this is a simple concept to explain, but try putting this into a closed form (indexed by some $i$). You will find you need more than 1 sum (nested for loops). Similarly, taking products over all $p$ prime is easy to explain, but programming this requires knowing which $p$ are actually prime.
Finally, some mathematical notation is just plain horrible. The Legendre symbol comes to mind - though I have to admit, I don't really have a better suggestion.
My best advice to you is to embrace as much of mathematical convention as possible - mathematics books do tend to use certain letters and symbols to describe similar things ($\phi$ is favored in intro algebra for homomorphisms, so when you see it out of context, you think "homomorphism"). Also, remember that when dealing with sets that are not explicitly given, strange things can happen - the set could be empty, the set could be infinite, and in fact the set could be uncountably infinite - think about writing a program that prints "all real numbers from 0 to 1."
A: Plenty of acceptable answers here about math formulas not usually being context-free grammars that compilers like.
few more tips... not sure what your CS background is:

*

*You may wish to look at Chomsky's venn diagram of grammars to see how different types of languages can be interpreted.

*if you're a CS person trying to make a mental model of formula syntax, you could read a paper and think about writing a grammar or even regex to recognize unique terms for just that paper.

*then as people here have recommended, if you do the same for a bunch of papers, then you'll start to see that each paper has it's own sort of little grammar.

Math grammars also gets into cool stuff like Turing Machines and Godel's Incompleteness theorem.  These deal with questions like "Just because I can write something in a consistent way, does that mean it's computable/answerable?"
A lot of the answers here I think are alluding to this part of math... for example imaginary numbers exist because they were not computable in some sense, but they were not computable in interesting ways that describe meaningful relationships.   Some of the other examples people have given above with infinite concepts are sort of similar, there's no one way to represent some of these concepts that is exclusionary to all other methods.  The only way you can express these ideas is with a train of thought and a series of formula expressions, that describe which relationships are relevant in context to each other.
All respect to these types of things, I think the best answer is that it's possible for math people to express things in more formal grammars.    They just aren't as popular because mathematicians are stereotyped as externally lazy people who like to spend more time thinking, reading and writing than developing (or adhering to) explicit external structures.
If you know famous mathematicians like Hilbert or Erdos they're often posing problems they want to walk around and think about, sometimes even posed as 'here is a guy walking around thinking about how to do X' :).
The psychology of people attracted to this is not always that of somebody who would need to figure out how to create/maintain a million lines of code to interpret, even if the grammar could be made super simple.   There's plenty of famous math problems that start with assuming their could be perfect grammars (or their couldn't be) and then working through the implications of those things.
Don't want to over-stereotype... plenty of modern maths pros are very good at coding and many include code in their papers to help others use or build on their work.   Also obviously today it's common to have and use symbolic interpreters which allow you to express, manipulate and solve infinite expressions.   Maybe someday one or a few of these syntaxes will become so elegant that people can write it or think about it and there's very little difference.   I think it's more accurate what people are saying here... even today the convention is that if you want to write a paper that is cited by a lot of people, you still need to read a lot of papers.   It's maybe a little old-school but that's the club and the price of membership.  At least until somebody changes it!
2 centuries ago we didn't have Automated Theorem Proving as a discipline of maths.   ATP has been around for a while but it's still  more regarded as a tool than a fundamental thing everybody should use is my impression.
I think the best advice I can give for interpreting math formulas is:

*

*read a math writing style guide (i think purdue used to have one in a public pdf, can't find it atm).  this can help to appreciate some basic formatting and what makes a clear vs unclear paper and how formula and text are flowing together in a good paper.   a lot of papers don't follow this stuff fully for various reasons, but it can help adding understanding at the margins.

*just as you would for anything you learn, try to look at multiple papers/articles/books describing the same thing, and pick the one that is clearest to you.

*sometimes really old papers that get cited frequently (hundreds or thousands) are the clearest and shortest and the more niche/modern papers that build on them have a lot more stylistic "flair"

*if you find what a given paper they cite that has the most citations, that can often help a lot.

*as you read, remember that math syntax is not intended for computation but for understanding the relationships.

*also remember all the relationships are (or should be) described as differences between the formula's symbols.   This usually requires understanding more than the formulas.

*so make sure you understand the abstract and relate the core concepts in the abstract to the most frequently referred to symbols and expressions in the paper.

*also likewise the specific symbols and style frequently in one paper will often follow (or be quite similar) to terms used by the source material that they cite after the abstract.

*if something is unclear, if you read the input papers (whose work they're building on) that can be helpful.

That said I'm still surprised by how many paper's I read where they don't even define all the symbols they use, but as people have pointed out it's human's writing this stuff and sometimes there are pretty niche/small-audiences being targeted where there are other concerns involved.
that's my experiences and my .02, hope it helps.
